package com.zp.drug.entity.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.zp.common.excel.annotation.ExcelDictFormat;
import com.zp.common.excel.convert.ExcelDictConvert;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;


/**
 * 药品库存视图对象
 *
 * @author zhang peng
 * @ date 2023-06-08
 */
@Data
@ExcelIgnoreUnannotated
public class DrugStockVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ExcelProperty(value = "主键")
    private String id;

    /**
     * 药品编码
     */
    @ExcelProperty(value = "药品编码")
    private String drugCode;

    /**
     * drugInfoId
     */
    @ExcelProperty(value = "drugInfoId")
    private String drugInfoId;

    /**
     * 小包装的药品价表id
     */
    private String drugMinPriceId;

    /**
     * drug_price_id
     */
    @ExcelProperty(value = "drug_price_id")
    private String drugPriceId;

    /**
     * 大小包装：1(小包装)；2(大包装)
     */
    @ExcelProperty(value = "大小包装：1(小包装)；2(大包装)")
    private String packSize;

    /**
     * 库存单位
     */
    @ExcelProperty(value = "库存单位")
    private String storageId;

    /**
     * 库存单位名称
     */
    @ExcelProperty(value = "库存单位名称")
    private String storageName;

    /**
     * 包装数量
     */
    @ExcelProperty(value = "包装数量")
    private Integer packageNum;

    /**
     * 包装规格
     */
    @ExcelProperty(value = "包装规格")
    private String packageSpec;

    /**
     * 包装单位
     */
    @ExcelProperty(value = "包装单位", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "spec_unit")
    private String packageUnits;

    /**
     * 最小规格
     */
    @ExcelProperty(value = "最小规格")
    private String minSpec;

    /**
     * 最小单位
     */
    @ExcelProperty(value = "最小单位", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "spec_unit")
    private String minUnits;

    /**
     * 进货价
     */
    @ExcelProperty(value = "进货价")
    private BigDecimal tradePrice;

    /**
     * 进货价(小规格)
     */
    @ExcelProperty(value = "进货价(小规格)")
    private BigDecimal tradePriceMin;

    /**
     * 售价
     */
    @ExcelProperty(value = "售价")
    private BigDecimal retailPrice;

    /**
     * 售价(小规格)
     */
    @ExcelProperty(value = "售价(小规格)")
    private BigDecimal retailPriceMin;

    /**
     * 网络价格
     */
    @ExcelProperty(value = "网络价格")
    private BigDecimal networkPrice;

    /**
     * 网络价（小规格）
     */
    @ExcelProperty(value = "网络价", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "小=规格")
    private BigDecimal networkPriceMin;

    /**
     * 折扣
     */
    @ExcelProperty(value = "折扣")
    private BigDecimal discount;

    /**
     * 批号
     */
    @ExcelProperty(value = "批号")
    private String batchNo;

    /**
     * 生产日期
     */
    @ExcelProperty(value = "生产日期")
    private Date produceDate;

    /**
     * 有效期
     */
    @ExcelProperty(value = "有效期")
    private Date expireDate;

    /**
     * 小包装库存量
     */
    @ExcelProperty(value = "小包装库存量")
    private Integer quantity;

    /**
     * 机构ID
     */
    @ExcelProperty(value = "机构ID")
    private String orgId;

    /**
     * 入库单号
     */
    @ExcelProperty(value = "入库单号")
    private String documentNo;

    /**
     * 对应的入库主表ID
     */
    @ExcelProperty(value = "对应的入库主表ID")
    private String importMasterId;

    /**
     * 货位
     */
    @ExcelProperty(value = "货位")
    private String location;

    /**
     * 供应商
     */
    @ExcelProperty(value = "供应商")
    private String supplierId;

    /**
     * 盘点是否显示（库存为0不显示）
     */
    @ExcelProperty(value = "盘点是否显示", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "库=存为0不显示")
    private String inventoryIsShow;

    /**
     * 备注信息
     */
    @ExcelProperty(value = "备注信息")
    private String remarks;

    /**
     * 是是否供应Y供应,N停止
     */
    @ExcelProperty(value = "是否供应Y供应,N停止")
    private String isSupply;

    /**
     * 停止供应操作人
     */
    @ExcelProperty(value = "停止供应操作人")
    private String stopOperator;

    /**
     * 停止供应时间
     */
    @ExcelProperty(value = "停止供应时间")
    private Date stopDate;

    /**
     * 比例
     */
    @ExcelProperty(value = "比例")
    private BigDecimal proportion;

    /**
     * 药品分类名称
     */
    @ExcelProperty(value = "药品分类名称")
    private String drugClassName;

    /**
     * 药品剂型名称
     */
    @ExcelProperty(value = "药品剂型名称")
    private String drugFromName;

    /**
     * 药品名称
     */
    @ExcelProperty(value = "药品名称")
    private String drugName;

    /**
     * 限制等级名称
     */
    @ExcelProperty(value = "限制等级名称")
    private String limitClassName;

    /**
     * 供应商名称
     */
    @ExcelProperty(value = "供应商名称")
    private String supplierName;

    /**
     * 厂商名称
     */
    @ExcelProperty(value = "厂商名称")
    private String firmName;

    /**
     * 基本药物类型（0：国家目录，1：省级目录:2：目录外）
     */
    @ExcelProperty(value = "基本药物类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "basic_drug_type")
    private String basicDrugType;

    /**
     * 抗菌药物 N-否，Y是
     */
    @ExcelProperty(value = "抗菌药物 N-否，Y是", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_yes_no")
    private String antisepticType;

    /**
     * 国家医保名称
     */
    @ExcelProperty(value = "国家医保名称")
    private String countryYbName;

    /**
     * 国家医保编码
     */
    @ExcelProperty(value = "国家医保编码")
    private String countryYbCode;

    /**
     * 有效期失效天数
     */
    @ExcelProperty(value = "有效期失效天数")
    private String daysOfFailure;

    /**
     * 进货价(采购入库价)总额
     */
    private double allPageTradePrice;

    /**
     * 零售价总额
     */
    private double allPageRetailPrice;

    /**
     * 进销差总额
     */
    private double allBalance;

    /**
     * 药品规格、价钱相同，但批次不同的药品保存id相同
     */
    private String identicalInfoId;
}
